/* eslint-disable no-unused-vars */
import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// import importToCDN from 'vite-plugin-cdn-import'
import viteCompression from 'vite-plugin-compression'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { visualizer } from 'rollup-plugin-visualizer'
import {
	ArcoResolver,
	VueUseComponentsResolver,
	VueUseDirectiveResolver
} from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
	base: '/',
	plugins: [
		vue(),
		visualizer(),
		AutoImport({
			// 需要去解析的文件
			include: [
				/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
				/\.vue$/,
				/\.vue\?vue/, // .vue
				/\.md$/ // .md
			],
			// imports 指定自动引入的包位置（名）
			imports: ['vue', 'pinia', 'vue-router', '@vueuse/core'],
			// 生成相应的自动导入json文件。
			eslintrc: {
				// 启用
				enabled: true,
				// 生成自动导入json文件位置
				filepath: './.eslintrc-auto-import.json',
				// 全局属性值
				globalsPropValue: true
			},
			resolvers: [ArcoResolver()]
		}),
		Components({
			// imports 指定组件所在目录，默认为 src/components
			dirs: ['src/components/', 'src/view/'],
			// 需要去解析的文件
			include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
			resolvers: [
				ArcoResolver({
					sideEffect: true
				}),
				VueUseComponentsResolver(),
				VueUseDirectiveResolver()
			]
		}),
		viteCompression({
			//生成压缩包gz
			verbose: true,
			disable: false,
			threshold: 10240,
			algorithm: 'gzip',
			ext: '.gz'
		})
	],
	build: {
		minify: 'terser',
		terserOptions: {
			compress: {
				//生产环境时移除console
				drop_console: true,
				drop_debugger: true
			}
		},
		// 取消计算文件大小，加快打包速度
		reportCompressedSize: false,
		sourcemap: true,
		// assetsDir: 'static/img',
		rollupOptions: {
			output: {
				chunkFileNames: 'js/[name]-[hash].js',
				entryFileNames: 'js/[name]-[hash].js',
				assetFileNames: '[ext]/[name]-[hash].[ext]'
			}
		}
	}
})
